Dev - C++ - sobrecargar el operador <<

 
Vista:

sobrecargar el operador <<

Publicado por Carri (1 intervención) el 09/09/2006 15:49:31
Hola, tengo una duda sobre la sobrecarga de ese operador, y esque cuando lo sobrecargo dentro de una clase, llama al destructor de dicha clase. Pongo un codigo de como lo hago para que lo veais, pero creo que esta bien (de hecho este codigo es de unos apuntes de la uni)

#include <cstdlib>
#include <iostream>
using namespace std;
class Punto{
friend ostream& operator<<( ostream &salida, const Punto p ){
// acceso a datos protected y private...
salida << *p.identificador <<":(" << p.x << "," << p.y << ")";
return salida;
}
private:
static int numserie;
int *identificador;
public:
int x;
int y;
Punto(int nx, int ny){ x=nx; y=ny; identificador=new int(numserie++); }
~Punto(){cout << "destructor"; delete identificador; }
int operator==( Punto p ){ return (x==p.x)&&(y==p.y); }
Punto operator=( Punto p )
{ x=p.x, y=p.y; /*no se sobrescribe la serie*/
return p;}
};

int Punto::numserie = 0;

int main(int argc, char *argv[])
{
Punto p1(10,15), p2(10,15), p3(0,0);
cout << p1 << ((p1==p2)?"==":"!=") <<p2 << "\n" ;
p2.x++;
cout << p1 << ((p1==p2)?"==":"!=") <<p2 << "\n" ;
p3=p2=p1;
cout << p1 << " " << p2 << " " << p3 << "\n";
cout << p1 << ((p1==p3)?"==":"!=") <<p3 << "\n" ;
system("PAUSE");
return EXIT_SUCCESS;
}

Alguien me puede ayudar? probe tb a sobrecargarlo como metodo de clase, en vez de funcion friend, pero lo mismo. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:sobrecargar el operador <<

Publicado por rocco (1 intervención) el 06/11/2006 17:47:06
En la declaracion friend ostream& operator<<( ostream &salida, const Punto p ), acuerdate que el objeto de la clase punto tambien pasa por referencia por lo que la declaracion de la funcion te quedaria friend ostream& operator << (ostream &salida, const Punto &p)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar